package main

type Entity interface {
	Name() string
	Description() string
}

type Portable interface {
	Entity
	Weight() int
}

type Edible interface {
	Entity
	Energy() int
}

type Harvestable interface {
	Entity
	Yield() []Portable
	Time() []Season
}

type Eater interface {
	Entity
	Eat(Edible)
}

type Mover interface {
	Entity
	Move(*Place)
}

type ItemCarrier interface {
	Entity
	// todo: error when too heavy
	Take(Portable)
	Drop(string) error
	Give(string, string) error
	ShowItems() string
}

type Trader interface {
	ItemCarrier
	Trade(Entity)
}

type ClothesWearer interface {
	Entity
	wear(cloth string)
	unwear(cloth string)
	checkClothes() string
}
